package com.p2p.controller;

import java.util.Map;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.p2p.handler.PeerJsWebSocketHandler;

/**
 * Peer API控制器
 * 实现FRONTEND_INTERFACE.md文档中定义的服务器API接口
 */
@RestController
@RequestMapping("/peerjs")
public class PeerController {

    // 从配置文件中读取最大连接数
    @Value("${peerjs.max-connections:100}")
    private int maxConnections;

    /**
     * 获取Peer ID接口(GET方式)
     * 对应文档中API接口部分的获取Peer ID
     */
    @GetMapping("/id")
    public Map<String, String> getPeerIdGet() {
        // 生成唯一的Peer ID
        String peerId = UUID.randomUUID().toString().substring(0, 8);
        return Map.of("id", peerId);
    }

    /**
     * 获取Peer ID接口(POST方式)
     * 对应文档中API接口部分的获取Peer ID
     */
    @PostMapping("/peerid")
    public Map<String, String> getPeerIdPost(@RequestBody Map<String, String> request) {
        // 生成唯一的Peer ID
        String peerId = UUID.randomUUID().toString().substring(0, 8);
        return Map.of("id", peerId);
    }

    /**
     * 查看服务器状态接口
     * 对应文档中API接口部分的查看服务器状态
     */
    @GetMapping("/status")
    public Map<String, Object> getStatus() {
        // 获取当前连接数
        int connections = PeerJsWebSocketHandler.getPeerSessionsCount();
        return Map.of(
            "connections", connections,
            "maxConnections", maxConnections
        );
    }
}